package edu.guet.strategy;

/**
 * 策略模式和工厂模式配合，只对外暴露了一个接口
 * 如果用简单工厂暴露了两个接口。factory和cssuper
 *
 * 策略模式定义了算法家族，分别封装起来，让他们之间可以相互替换，此模式让算法的变化，不会影响道使用算法的客户。
 */
public class CashContext {

    private CashSuper cs = null;

    public CashContext(String type){

        switch (type){
            case "正常收费":
                cs = new CashNormal();
                break;
            case "满300减100":
                cs = new CashReturn(300.0, 100.0);
                break;
            case "打8折":
                cs = new CashRebate(0.8);
        }

    }

    public Double getResult(Double money){
        Double cash = cs.acceptCash(money);
        return cash;

    }
}
